<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    
</body>
</html>
<script>
    //2021.16.22.38 
    //但问耕耘 不问收获   

    //灵活使用枚举 让程序有更好的可读性 
    //demo代码如下 
    //比如 现在去大保健 通过筛子随机抛出一个服务项 程序模拟 

//初级程序员 
    function getServe(status:number){
        if(status === 0){
            return "message";
        }else if(status === 1){
            return "SPA";
        }else if(status === 2){
            return "dabaoj"
        }
    } 
    const result = getServe(0);
    console.log(`我要去${result}`)    //我要去message   

//中级程序员
    const Status = {  //放在一个对象里面方便操作数据 清晰可观 
        MASSAGE: 0,
        SPA:1,
        DABAOJ:2,
    } 
    function getServe(status:any){
        if(status === Status.MASSAGE){
             return "massage";
        }else if(status === Status.SPA){
            return "spa";
        }else if(status === Status.DABAOJ){
            return "daobaoj";
        }
    }
    const result = getServe(Status.SPA)
    console.log(`我要去${result}`)    //我要去spa

//高级程序员写法 
    enum Status {
        MASSAGE,
        SPA,
        DABAOJIAN,
    }
    function getServe(status: any) {
    if (status === Status.MASSAGE) {
        return "massage";
    } else if (status === Status.SPA) {
        return "spa";
    } else if (status === Status.DABAOJIAN) {
        return "dabaojian";
    }
    }
    const result = getServe(Status.SPA);
    console.log(`我要去${result}`);


//枚举类型的对应值 
    //调用时传一个1 也会输出 我要去spa
    const result = getServe(1);
    //因为枚举类型是有对应的数字值的 默认0开始 直接log代码如下  反向映射 
    console.log(Status.MASSAGE);    //0
    console.log(Status.SPA);        //1
    console.log(Status.DABAOJIAN);  //2
    //但是不想从0开始了 而是从1开始 代码修改如下 
    enum Status {
        MASSAGE = 1,
        SPA,
        DABAOJ,
    }

//枚举通过下标反差  
    //在这里打印出枚举的值(下标) 即知道下标以后 也可以通过反差的方法 得到枚举的值 
    console.log(Status.MASSAGE,Status[1]);     // 0 undefined    
    //在这反查了   

    
















    





























</script>